// 糖果问题
// 目的：给小孩分糖果，保证

// 输入: [1,2,3], [1,1]
// 输出: 1
// 解释: 
// 你有三个孩子和两块小饼干，3个孩子的胃口值分别是：1,2,3。
// 虽然你有两块小饼干，由于他们的尺寸都是1，你只能让胃口值是1的孩子满足。
// 所以你应该输出1。
function findCandy(g, s) {
    g = g.sort((a, b) => a - b); // 饼干
    s = s.sort((a, b) => a - b); // 小孩胃口
    let num = 0;
    let index = 0;
    for (let i = 0; i < g.length; i++) {
        if (i < s.length && g[i] >= s[index]) {
            num++;
            index++
        }
    }
    return
}

// 输入: [1,7,4,9,2,5]
// 输出: 6 
// 解释: 整个序列均为摆动序列。
function wingMaxlength(arr) {
    if (arr.length < 2) {
        return arr.length
    }
    let prediff = arr[0] - arr[1];
    let count = prediff === 0 ? 1 : 2
    for (let i = 0; i < arr.length; i++) {
        let diff = arr[0] - arr[1];
        if ((prediff <= 0 && diff > 0) || diff < 0 && prediff >= 0) {
            count++;
            prediff = diff
        }
    }
    return count
}

// 移除k个数字 402
// 比较最左 是否最大 大就要删除
var removeKdigists = function (num, k) {
    let stack = [];
    if (num.length == k) return "0";
    for (let val of num) {
        while (k && stack.length && stack[stack.length - 1] > val) {
            stack.pop();
            k--;
        }
        stack.push(val)
    }
    let res = stack.join("");
    if (res == 0) return "0";
    while (stack[0] == 0) {
        stack.shift()
    }
    return stack.join("").substring(0, stack.length - k);
}


// 跳跃游戏 55
// 输入: [2,3,1,1,4] 2 跳了一步 到3 跳三步 最后一位
// 输出: true
var canJump = function (nums) {
    const length = nums.length;
    let maxStep = 0;
    for (let i = 0; i < length; i++) {
        if (maxStep < i) return false;
        // i+num[i] 代表能走的最远的位置
        maxStep = Math.max(maxStep, i + nums[i]);
        if (maxStep >= length - 1) return true
    }
}


// 射击气球（452）
// 遍历所有气球，当气球的开始坐标大于end
// 将end 设置为当前end 并增加箭的数量
var findMinArrowShots = function (points) {
    if (points.length == 0) return 0;
    points.sort((a, b) => a[1] - b[1]); // 保证气球有序
    var count = 1;
    var end = points[0][1];
    for (var i = 1; i < points.length; i++) {
        if (points[i][0] <= end) {
            continue
        }
        end = points[i][1];
        count++
    }
    return count
}



// 跳跃游戏2（hard放弃）
// 